package com.ideaaedi.zoo.example.springboot.flowable.sharding.entity.po;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
import lombok.Setter;

import java.io.Serial;
import java.io.Serializable;
import java.util.Date;

/**
 * <p>
 * 
 * </p>
 *
 * @author Administrator
 * @since 1.0.0
 */
@Getter
@Setter
@TableName("ACT_HI_TASKINST")
@Schema(name = "ActHiTaskinstPO", description = "历史任务")
public class ActHiTaskinstPO implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    @TableId("ID_")
    @Schema(description = "id")
    private String id;

    @TableField("REV_")
    @Schema(description = "版本号")
    private Integer rev;

    @TableField("PROC_DEF_ID_")
    @Schema(description = "流程定义ID")
    private String procDefId;

    @TableField("TASK_DEF_ID_")
    @Schema(description = "任务节点定义ID")
    private String taskDefId;

    @TableField("TASK_DEF_KEY_")
    @Schema(description = "任务节点定义Key")
    private String taskDefKey;

    @TableField("PROC_INST_ID_")
    @Schema(description = "流程实例ID")
    private String procInstId;

    @TableField("EXECUTION_ID_")
    @Schema(description = "执行实例ID")
    private String executionId;

    @TableField("SCOPE_ID_")
    @Schema(description = "业务域标识")
    private String scopeId;

    @TableField("SUB_SCOPE_ID_")
    @Schema(description = "业务域子域标识")
    private String subScopeId;

    @TableField("SCOPE_TYPE_")
    @Schema(description = "业务域类型")
    private String scopeType;

    @TableField("SCOPE_DEFINITION_ID_")
    @Schema(description = "业务域关联的流程定义id")
    private String scopeDefinitionId;

    @TableField("PROPAGATED_STAGE_INST_ID_")
    @Schema(description = "传播阶段实例ID",
            $comment = "在某些高级场景下，如嵌套流程或阶段性的流程执行，这个字段可以用来标识流程中的某个阶段实例是否已经传播到了其他部分或流程")
    private String propagatedStageInstId;

    @TableField("STATE_")
    @Schema(description = "任务状态")
    private String state;

    @TableField("NAME_")
    @Schema(description = "任务名称")
    private String name;

    @TableField("PARENT_TASK_ID_")
    @Schema(description = "父任务节点ID")
    private String parentTaskId;

    @TableField("DESCRIPTION_")
    @Schema(description = "描述")
    private String description;

    @TableField("OWNER_")
    @Schema(description = "任务所有者")
    private String owner;

    @TableField("ASSIGNEE_")
    @Schema(description = "经办人")
    private String assignee;

    @TableField("START_TIME_")
    @Schema(description = "开始时间")
    private Date startTime;

    @TableField("IN_PROGRESS_TIME_")
    @Schema(description = "开始处理任务的起始时间")
    private Date inProgressTime;

    @TableField("IN_PROGRESS_STARTED_BY_")
    @Schema(description = "记录谁开始处理的任务")
    private String inProgressStartedBy;

    @TableField("CLAIM_TIME_")
    @Schema(description = "签收时间")
    private Date claimTime;

    @TableField("CLAIMED_BY_")
    @Schema(description = "签收人")
    private String claimedBy;

    @TableField("SUSPENDED_TIME_")
    @Schema(description = "暂停时间")
    private Date suspendedTime;

    @TableField("SUSPENDED_BY_")
    @Schema(description = "暂停人")
    private String suspendedBy;

    @TableField("END_TIME_")
    @Schema(description = "结束时间")
    private Date endTime;

    @TableField("COMPLETED_BY_")
    @Schema(description = "完成人")
    private String completedBy;

    @TableField("DURATION_")
    @Schema(description = "耗时（毫秒）")
    private Long duration;

    @TableField("DELETE_REASON_")
    @Schema(description = "删除原因")
    private String deleteReason;

    @TableField("PRIORITY_")
    @Schema(description = "优先级")
    private Integer priority;

    @TableField("IN_PROGRESS_DUE_DATE_")
    @Schema(description = "需要开始出路任务的截止时间")
    private Date inProgressDueDate;

    @TableField("DUE_DATE_")
    @Schema(description = "截止时间")
    private Date dueDate;

    @TableField("FORM_KEY_")
    @Schema(description = "关联表单的KEY")
    private String formKey;

    @TableField("CATEGORY_")
    @Schema(description = "分类")
    private String category;

    @TableField("TENANT_ID_")
    @Schema(description = "租户值")
    private String tenantId;

    @TableField("LAST_UPDATED_TIME_")
    @Schema(description = "最后更新时间")
    private Date lastUpdatedTime;
    
    @Schema(description = "日期（yyyy-MM-dd）")
    @TableField("sharding_date")
    private String shardingDate;
}
